// 小程序主题管理工具

// 主题配置
export const themeConfig = {
  default: {
    name: '默认主题',
    primary: '#3478f6',
    accent: '#ff6b35'
  },
  green: {
    name: '绿色主题',
    primary: '#52c41a',
    accent: '#ff7a45'
  },
  purple: {
    name: '紫色主题',
    primary: '#722ed1',
    accent: '#ff7875'
  },
  orange: {
    name: '橙色主题',
    primary: '#fa8c16',
    accent: '#ff4d4f'
  },
  red: {
    name: '红色主题',
    primary: '#C6282B',
    accent: '#fa8c16'
  },
  dark: {
    name: '深色主题',
    primary: '#1890ff',
    accent: '#ff6b35'
  },
  enterprise: {
    name: '企业主题',
    primary: '#1890ff',
    accent: '#52c41a'
  },
  tech: {
    name: '科技主题',
    primary: '#722ed1',
    accent: '#13c2c2'
  }
}

// 获取当前主题
export function getCurrentTheme() {
  return uni.getStorageSync('theme') || 'red'
}

// 设置主题
export function setTheme(themeName) {
  if (!themeConfig[themeName]) {
    console.warn(`主题 ${themeName} 不存在`)
    return false
  }
  
  // 保存到本地存储
  uni.setStorageSync('theme', themeName)
  
  // 应用到页面
  applyTheme(themeName)
  
  return true
}

// 应用主题到页面
export function applyTheme(themeName) {
  const theme = themeConfig[themeName]
  if (!theme) {
    console.warn(`主题 ${themeName} 配置不存在`)
    return
  }
  
  // 小程序环境下，主题主要通过CSS变量在样式中定义
  // 这里只需要记录当前主题，实际的样式应用在CSS文件中
  console.log('应用主题:', themeName, theme)
  
  // 可以通过全局变量存储当前主题信息
  getApp().globalData = getApp().globalData || {}
  getApp().globalData.currentTheme = themeName
  getApp().globalData.themeColors = theme
}

// 初始化主题
export function initTheme() {
  try {
    const currentTheme = getCurrentTheme()
    
    // 小程序环境下，主题主要通过CSS类名应用
    // 这里只需要记录当前主题，实际的样式应用在CSS文件中
    console.log('小程序主题初始化:', currentTheme)
    
    // 存储到全局数据中
    const app = getApp()
    if (app) {
      app.globalData = app.globalData || {}
      app.globalData.currentTheme = currentTheme
      app.globalData.themeColors = themeConfig[currentTheme]
    }
    
    console.log('小程序主题初始化成功:', currentTheme)
  } catch (error) {
    console.warn('小程序主题初始化失败:', error)
    // 使用默认主题
    const app = getApp()
    if (app) {
      app.globalData = app.globalData || {}
      app.globalData.currentTheme = 'red'
      app.globalData.themeColors = themeConfig['red']
    }
  }
}

// 获取主题颜色值
export function getThemeColor(colorName) {
  const currentTheme = getCurrentTheme()
  const theme = themeConfig[currentTheme]
  if (theme) {
    switch (colorName) {
      case 'primary-color':
        return theme.primary
      case 'accent-color':
        return theme.accent
      default:
        return theme.primary
    }
  }
  // 默认返回红色主题
  return '#C6282B'
}

// 获取所有主题列表
export function getThemeList() {
  return Object.keys(themeConfig).map(key => ({
    key,
    ...themeConfig[key]
  }))
} 